home *** CD-ROM | disk | FTP | other *** search
- /* SE-Protokoll zur Kommunikation zwischen Shells zur Programmentwicklung
- * und Editoren.
- *
- * Dieses Protokoll dient dazu, unter Multitasking-Systemen die Shell
- * zur Compilierung und ähnlichen Sachen zu veranlassen, und um Fehler-
- * meldungen und/oder Fehlerdateien an den Editor zurückzugeben.
- *
- * Kommandos bzw. Nachrichten von der Shell zum Editor beginnen
- * mit SE_, Nachrichten vom Editor zur Shell beginnen mit ES_
- *
- * Da teilweise Zeiger auf Speicherbereiche übergeben werden, ist vom
- * jeweiligen Absender der Nachricht darauf zu achten, daß diese
- * Speicherbereiche vom Empfänger auch lesbar sind (Memory Protection!).
- * Dafür sind diese als Readable zu allozieren!
- *
- * Version Datum Änderungen
- * =====================================================================
- * 0.1 10.1.94 Erster Entwurf
- * 0.2 17.1.94 SE_TERMINATE hinzugefügt
- * 0.3 25.1.94 SE_CLOSE hinzugefügt.
- * tErrInfo geändert, SE_ERROR geändert
- * tShellCommands und tEditCommands korrigiert
- */
-
-
- #define SE_INIT 0x4200
- /* Die Shell fragt an, ob ein Editor das SE-Protokoll
- * versteht.
- * Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
- * Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
- * Wort 6: Unterstütze Versionsnummer des Protokolls
- * Als Antwort erhält es ein ES_OK vom Editor.
- */
-
- #define SE_OK 0x4201
- /* Die Shell sagt dem Editor, das sie das Protokoll
- * versteht.
- * Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
- * Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
- * Wort 6: Unterstütze Versionsnummer des Protokolls
- * Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
- */
-
- #define SE_ACK 0x4202
- /* Die Shell bestätigt den Empfang eines Editorkommandos und gibt zurück,
- * ob das Kommando ausgeführt wird.
- * Wort 3: TRUE: Kommando wird verstanden und ausgeführt.
- * FALSE: Das Kommando wird nicht verstanden
- * Eine SE_ACK mit TRUE sagt nichts darüber aus, ob das Kommando erfolg-
- * reich ausgeführt wurde. Es sagt nur, daß die Shell das Kommando
- * versteht und ausführen wird!
- */
-
- #define SE_OPEN 0x4203
- /* Die Shell sagt dem Editor, daß er einen Text öffnen
- * soll. Als Antwort erhält die Shell ein ES_ACK
- * Wort 3+4: Ein Zeiger auf den Filenamen des zu öffnenden Files
- */
-
- #define SE_ERROR 0x4204
- /* Es ist ein Fehler beim Compilieren aufgetreten.
- * Wort 3+4: Ein Zeiger auf eine Infostruktur, die wie folgt
- * aufgebaut ist:
- * Wort 0+1: Ein Zeiger auf den Namen des compilierten Textes.
- * Wort 2+3: Ein Zeiger auf den Text der Fehlermeldung
- * Wort 4 : Die Fehlernummer
- * Mit ES_ACK bestätigt der Editor die Meldung.
- */
-
- #define SE_ERRFILE 0x4205
- /* Es sind Fehler aufgetreten. Die Fehlermeldungen stehen in einem
- * Errorfile, welches in der Message spezifiziert wird.
- * Wort 3+4: Ein Zeiger auf den Filenamen des Errorfiles mit den
- * Fehlermeldungen
- * Wort 5+6: Ein Zeiger auf den Namen des compilierten Textes
- * Mit ES_ACK bestätigt der Editor die Meldung.
- */
-
- #define SE_PROJECT 0x4206
- /* Die Shell teilt dem Editor mit, daß das Projekt
- * geändert wurde. Der Filename des aktuellen
- * Projektfiles wird als Parameter übergeben
- * Wort 3+4: Ein Zeiger auf den Namen des Projektfiles
- * Der Editor bestätigt mit ES_ACK.
- * Eine vernünftige Reaktion des Editors wäre es in dem Fall,
- * ebenfalls das Projekt zu wechseln, sofern er diese unterstützt.
- */
-
- #define SE_QUIT 0x4207
- /* Die Shell teilt dem Editor mit, daß sie jetzt beendet wird.
- * Der Editor sollte in dem Fall die Shell als Kommunikationspartner
- * vergessen.
- * Parameter gibt es keine.
- * Es wird keine Antwort erwartet!
- */
-
- #define SE_TERMINATE 0x4208
- /* Die Shell teilt dem Editor mit, daß dieser sich beenden soll.
- * Der Editor sollte in dem Fall sich selbst beenden und seinen ganz
- * normalen Terminierungsprozeß durchlaufen (und in dem auch ein ES_QUIT
- * schicken!). Der Grund für so eine Meldung der Shell könnte zum Beispiel
- * zu wenig Speicher zum compilieren sein.
- * Mit ES_ACK bestätigt der Editor die Meldung.
- */
-
- #define SE_CLOSE 0x4209
- /* Die Shell teilt dem Editor mit, daß dieser alle Texte sichern soll.
- * Der Editor sollte bei geänderten Texten vorher nachfragen.
- * Mit ES_ACK bestätigt der Editor die Meldung.
- */
-
-
- #define ES_INIT 0x4240
- /* Ein Editor fragt an, ob eine Shell das SE-Protokoll versteht.
- * Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
- * Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
- * Wort 6: Unterstütze Versionsnummer des Protokolls
- * Als Antwort erhält es SE_OK von der Shell
- */
-
- #define ES_OK 0x4241
- /* Der Editor beantwortet die Anfrage der Shell nach dem Protokoll.
- * Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
- * Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
- * Wort 6: Unterstütze Versionsnummer des Protokolls
- * Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
- */
-
- #define ES_ACK 0x4242
- /* Der Editor bestätigt den Empfang des Kommandos
- * Wort 3: TRUE: Kommando wird verstanden und ausgeführt.
- * FALSE: Das Kommando wird nicht verstanden
- * Eine ES_ACK mit TRUE sagt nichts darüber aus, ob das Kommando erfolg-
- * reich ausgeführt wurde. Es sagt nur, daß der Editor das Kommando
- * versteht und ausführen wird!
- */
-
- #define ES_COMPILE 0x4243
- /* Der Editor sagt der Shell, daß sie ein File übersetzen soll.
- * Ein Pointer auf den Dateinamen wird in der Message übergeben.
- * Wort 3+4: Zeiger auf den Namen der zu compilierenden Datei.
- * Diese Nachricht muß mit SE_ACK bestätigt werden.
- */
-
- #define ES_MAKE 0x4244
- /* Der Editor sagt der Shell, daß sie ein Make ausführen soll.
- * Ein Filename kann in der Message übergeben werden, muß aber
- * nicht gesetzt sein und muß von der Shell auch nicht beachtet
- * werden!
- * Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
- * Die Shell bestätigt mit SE_ACK.
- */
-
- #define ES_MAKEALL 0x4245
- /* Der Editor sagt der Shell, daß ein komplettes Make All ausgeführt
- * werden soll. Ein Filename für das Makefile kann (muß nicht) in
- * der Message übergeben werden.
- * Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
- * Die Shell bestätigt mit SE_ACK.
- */
-
- #define ES_LINK 0x4246
- /* Der Editor sagt der Shell, daß das Programm
- * gelinkt werden soll. Ein Filename kann
- * in der Message übergeben werden, muß aber
- * nicht unbedingt beachtet werden von der Shell!
- * Wort 3+4: Zeiger auf den Namen der Source, die gelinkt werden soll
- * (oder NULL)
- * Die Shell bestätigt mit SE_ACK.
- */
-
- #define ES_EXEC 0x4247
- /* Der Editor sagt der Shell, daß das Programm
- * zu der Source ausgeführt werden soll. Ein
- * Filename kann übergeben werden, muß von der
- * Shell aber nicht beachtet werden.
- * Wort 3+4: Zeiger auf den Namen des auszuführenden Files (oder NULL)
- * Bei einer Sourcedatei ist diese ggf. noch zu
- * compilieren und/oder zu linken
- * Die Shell bestätigt mit SE_ACK.
- */
-
- #define ES_MAKEEXEC 0x4248
- /* Die Shell soll ein Make ausführen und danach das Programm ausführen.
- * Ein Filename für das Makefile kann (muß nicht) in der Message
- * übergeben werden.
- * Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
- * Die Shell bestätigt mit SE_ACK.
- */
-
- #define ES_PROJECT 0x4249
- /* Der Editor teilt der Shell mit, daß das Project
- * geändert/gewechselt wurde. Der Filename des
- * Projektfiles wird als Parameter in der Message
- * übergeben.
- * Wort 3+4: Zeiger auf den Namen des Projektfiles
- * Die Shell bestätigt mit SE_ACK.
- * Eine vernünftige Reaktion der Shell wäre in dem Fall, ebenfalls
- * das Projekt zu wechseln, sofern es diese unterstützt.
- */
-
- #define ES_QUIT 0x424A
- /* Der Editor teilt der Shell mit, daß er jetzt beendet wird.
- * Die Shell sollte in dem Fall den Editor als Kommunikationspartner
- * vergessen.
- * Parameter gibt es keine.
- * Es wird keine Antwort erwartet!
- */
-
- #define SEPROTOVERSION 0x100 /* Die Versionsnummer des Protokolls.
- * Highbyte ist die Major Number
- * Lowbyte ist die Lower Number
- */
-
- /* Typdefinitionen für die Nachrichten
- */
-
- /* Dies definiert die einzelnen Bits, welche Nachrichten unterstützt werden
- */
-
- /* Shell-Kommandos
- */
- #define _SEINIT 0x0001
- #define _SEOK 0x0002
- #define _SEACK 0x0004
- #define _SEOPEN 0x0008
- #define _SEERROR 0x0010
- #define _SEERRFILE 0x0020
- #define _SEPROJECT 0x0040
- #define _SEQUIT 0x0080
- #define _SETERMINATE 0x0100
- #define _SECLOSE 0x0200
-
- /* Editor-Kommandos
- */
- #define _ESINIT 0x0001
- #define _ESOK 0x0002
- #define _ESACK 0x0004
- #define _ESCOMPILE 0x0008
- #define _ESMAKE 0x0010
- #define _ESMAKEALL 0x0020
- #define _ESLINK 0x0040
- #define _ESEXEC 0x0080
- #define _ESMAKEEXEC 0x0100
- #define _ESPROJECT 0x0200
- #define _ESQUIT 0x0400
-
-
- typedef struct
- {
- char *errFile; /* Zeiger auf den Namen der compilierten Datei
- */
- char *errMess; /* Zeiger auf die Fehlermeldung
- */
- int errNum; /* Die Fehlernummer
- */
- long errLine; /* Die fehlerhafte Zeile
- */
- int errRow; /* Die Spalte mit dem Fehler (oder 0)
- */
- } ERRINFO;
-